package com.sheng.leetcode.year2022.month12.day03;

import org.junit.Test;

/**
 * @author liusheng
 * @date 2022/12/05
 * <p>
 * 1796. 字符串中第二大的数字<p>
 * <p>
 * 给你一个混合字符串 s ，请你返回 s 中 第二大 的数字，如果不存在第二大的数字，请你返回 -1 。<p>
 * 混合字符串 由小写英文字母和数字组成。<p>
 * <p>
 * 示例 1：<p>
 * 输入：s = "dfa12321afd"<p>
 * 输出：2<p>
 * 解释：出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2 。<p>
 * <p>
 * 示例 2：<p>
 * 输入：s = "abc1111"<p>
 * 输出：-1<p>
 * 解释：出现在 s 中的数字只包含 [1] 。没有第二大的数字。<p>
 * <p>
 * 提示：
 * 1 <= s.length <= 500<p>
 * s 只包含小写英文字母和（或）数字。<p>
 * <p>
 * 来源：力扣（LeetCode）<p>
 * 链接：<a href="https://leetcode.cn/problems/second-largest-digit-in-a-string">1796. 字符串中第二大的数字</a><p>
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。<p>
 */
public class LeetCode1796 {

    @Test
    public void test01() {
//        String s = "dfa12321afd";
        String s = "abc1111";
        System.out.println(new Solution().secondHighest(s));
    }
}

class Solution {
    public int secondHighest(String s) {
        int max = -1;
        int ans = -1;
        for (int i = 0; i < s.length(); i++) {
            // 循环判断字符串中的字符是否为数字
            if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
//                int num = Integer.parseInt(Character.toString(s.charAt(i)));
                int num = s.charAt(i) - '0';
                if (num > max) {
                    ans = max;
                    max = num;
                } else if (num < max && num > ans) {
                    ans = num;
                }
            }
        }
        return ans;
    }
}
